package com.example.springboottest.example.sort;

import com.sun.btrace.BTraceUtils;

/**
 * 交换排序，时间复杂度 O(n²)
 * 属于选择排序的一种，最简单的排序，效率确最低下
 * 主要是每次排序没有对原有数据进行提升
 */
public class ExchangeSort extends SortBase {

    public static void main(String[] args) {
        ExchangeSort sort = new ExchangeSort();
        sort.sort(sort.dataArr);
        sort.show(sort.dataArr);
    }

    /**
     * 每次循环得到最左边的数字是最小的
     *
     * @param dataArr
     */
    @Override
    public void sort(int[] dataArr) {
        int swapCount = 0;
        show(dataArr);
        for (int i = 0; i < dataArr.length; i++) {
            for (int j = i + 1; j < dataArr.length; j++) {
                if (dataArr[i] > dataArr[j]) {
                    swapCount++;
                    swap(dataArr, i, j);
                }
            }
            show(dataArr);
        }
        System.out.println("交换排序完成，共进行\t" + swapCount + "次交换");
    }
}
